home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / AXREAD12.ZIP / READ.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-08-03  |  17KB  |  1,221 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN003
  20.     Boolean  BOOLEAN004
  21.     Boolean  BOOLEAN005
  22.     Boolean  BOOLEAN006
  23.     Boolean  BOOLEAN007
  24.     Boolean  BOOLEAN008
  25.     Boolean  BOOLEAN009
  26.     Boolean  BOOLEAN010
  27.     Boolean  BOOLEAN011
  28.     Boolean  BOOLEAN012
  29.     Boolean  BOOLEAN013
  30.     Boolean  BOOLEAN014
  31.     Boolean  BOOLEAN015
  32.     Integer  INTEGER003
  33.     Integer  INTEGER004
  34.     Integer  INTEGER005
  35.     Integer  INTEGER011
  36.     Integer  TINTEGER012(3)
  37.     Integer  TINTEGER013(3)
  38.     String   STRING001
  39.     String   STRING017
  40.     String   STRING018
  41.     String   STRING019
  42.     String   STRING020
  43.     String   STRING021
  44.     String   STRING022
  45.     String   STRING023
  46.     String   STRING024
  47.     String   STRING025
  48.     String   STRING026
  49.     String   STRING027
  50.     String   STRING028
  51.     String   STRING029
  52.     String   STRING030
  53.     String   STRING031
  54.     String   STRING032
  55.     String   TSTRING033(10)
  56.     String   TSTRING034(10)
  57.     String   TSTRING035(10)
  58.     String   STRING036
  59.     String   STRING037
  60.     String   STRING038
  61.     String   STRING039
  62.     String   STRING040
  63.     String   STRING041
  64.     String   STRING042
  65.     String   STRING043
  66.     String   STRING044
  67.     String   STRING045
  68.     String   STRING046
  69.     String   STRING047
  70.     String   STRING048
  71.     String   STRING049
  72.     String   STRING050
  73.     String   STRING051
  74.     String   STRING052
  75.     String   STRING054
  76.     String   STRING057
  77.     Int      INT001
  78.     Int      INT002
  79.     Int      INT003
  80.     Int      INT004
  81.     Int      INT005
  82.     Int      INT006
  83.     Int      INT007
  84.     Int      INT008
  85.     Declare  Function FUNCTION001(String STRING053) String
  86.     Declare  Function FUNCTION002(String STRING055) Boolean
  87.     Declare  Function FUNCTION003(String STRING056) String
  88.     Declare  Function FUNCTION004(Integer INTEGER010) Integer
  89.     Declare  Procedure PROC001(String STRING002)
  90.     Declare  Procedure PROC002(String STRING003, Integer INTEGER001, String STRING004)
  91.     Declare  Procedure PROC003(String STRING005, String STRING006, String STRING007, String STRING008)
  92.     Declare  Procedure PROC004(String STRING009, String STRING010, String STRING011, String STRING012, Integer INTEGER002, String STRING013, String STRING014, String STRING015, String STRING016, Boolean BOOLEAN001, Boolean BOOLEAN002)
  93.     Declare  Procedure PROC005(Integer INTEGER006, Integer INTEGER007, Var Integer INTEGER008)
  94.     Declare  Procedure PROC006()
  95.     Declare  Procedure PROC007(Var Int INT009, Int INT010)
  96.     Declare  Procedure PROC008(Integer INTEGER009)
  97.     Declare  Procedure PROC009(Int INT011)
  98.  
  99. ;------------------------------------------------------------------------------
  100.  
  101.     Goto LABEL004
  102.     End
  103.  
  104. ;------------------------------------------------------------------------------
  105.  
  106.     Procedure PROC001(String STRING002)
  107.  
  108.     GetUser
  109.     FOpen 3, STRING002, 1, 3
  110.     FPutLn 3, PCBMac("@BOARDNAME@")
  111.     STRING001 = ReadLine(PCBDat(), 2)
  112.     Tokenize STRING001
  113.     FPutLn 3, GetToken()
  114.     FPutLn 3, GetToken()
  115.     If (OnLocal()) Then
  116.         STRING001 = "COM0:"
  117.     Else
  118.         STRING001 = ReadLine(PCBDat(), 52)
  119.     Endif
  120.     FPutLn 3, STRING001
  121.     If (OnLocal()) Then
  122.         STRING001 = "0 BAUD,N,8,1"
  123.     Else
  124.         STRING001 = ReadLine(PCBDat(), 53) + " BAUD,N,8,1"
  125.     Endif
  126.     FPutLn 3, STRING001
  127.     FPutLn 3, "0"
  128.     If (U_Alias == "") Then
  129.         STRING001 = U_Name()
  130.     Else
  131.         STRING001 = U_Alias
  132.     Endif
  133.     Tokenize STRING001
  134.     FPutLn 3, GetToken()
  135.     FPutLn 3, GetToken()
  136.     FPutLn 3, U_City
  137.     FPutLn 3, "1"
  138.     FPutLn 3, U_Sec
  139.     FPutLn 3, PCBMac("@TIMELEFT@")
  140.     FClose 3
  141.     FClose -1
  142.  
  143.     EndProc
  144.  
  145.  
  146. ;------------------------------------------------------------------------------
  147.  
  148.     Procedure PROC002(String STRING003, Integer INTEGER001, String STRING004)
  149.  
  150.     MsgToFile CurConf(), INTEGER001, TempPath() + "temp" + String(PcbNode())
  151.     FOpen 2, TempPath() + "temp" + String(PcbNode()), 0, 3
  152.     While (STRING001 <> "Message Body:") Do
  153.         FGet 2, STRING001
  154.     EndWhile
  155.     FOpen 3, STRING003, 1, 3
  156.     :LABEL001
  157.     If (Ferr(2)) Goto LABEL003
  158.     FGet 2, STRING001
  159.     If (Left(STRING001, 1) == Chr(1)) Goto LABEL002
  160.     If (Left(STRING001, Len(STRING004)) == STRING004) Then
  161.         FPutLn 3, STRING001
  162.     Else
  163.         FPutLn 3, STRING004 + STRING001
  164.     Endif
  165.     :LABEL002
  166.     Goto LABEL001
  167.     :LABEL003
  168.     FClose 2
  169.     FClose 3
  170.     Delete TempPath() + "temp" + String(PcbNode())
  171.  
  172.     EndProc
  173.  
  174.  
  175. ;------------------------------------------------------------------------------
  176.  
  177.     Procedure PROC003(String STRING005, String STRING006, String STRING007, String STRING008)
  178.  
  179.     FOpen 3, STRING005, 1, 0
  180.     FPutLn 3, Mixed(STRING007)
  181.     FPutLn 3, Mixed(STRING006)
  182.     FPutLn 3, STRING008
  183.     FPutLn 3, String(HiMsgNum() + 1)
  184.     FPutLn 3, ConfInfo(CurConf(), 1)
  185.     FPutLn 3, "NO"
  186.     FClose 3
  187.  
  188.     EndProc
  189.  
  190.  
  191. ;------------------------------------------------------------------------------
  192.  
  193.     Procedure PROC004(String STRING009, String STRING010, String STRING011, String STRING012, Integer INTEGER002, String STRING013, String STRING014, String STRING015, String STRING016, Boolean BOOLEAN001, Boolean BOOLEAN002)
  194.  
  195.     PROC001(STRING011)
  196.     If (BOOLEAN002) PROC002(STRING010, INTEGER002, STRING016)
  197.     PROC003(STRING012, STRING013, STRING014, STRING015)
  198.     SaveScrn
  199.     If (Right(TempPath(), 1) == "\") Then
  200.         STRING001 = TempPath()
  201.     Else
  202.         STRING001 = TempPath() + "\"
  203.     Endif
  204.     Shell 1, INT001, STRING009, STRING001
  205.     RestScrn
  206.     Delete STRING011
  207.     If (Exist(TempPath() + "MSGABT")) Then
  208.         Delete TempPath() + "MSGABT"
  209.         Wait
  210.     ElseIf (BOOLEAN001) Then
  211.         Message CurConf(), STRING013, STRING014, STRING015, "R", 0, 0, ConfInfo(CurConf(), 31), STRING010
  212.     Else
  213.         Message CurConf(), STRING013, STRING014, STRING015, "N", 0, 0, ConfInfo(CurConf(), 31), STRING010
  214.     Endif
  215.     Delete STRING010
  216.     Delete STRING012
  217.  
  218.     EndProc
  219.  
  220.     :LABEL004
  221.     INTEGER005 = CurConf()
  222.     If (Exist(PPEPath() + "REPLY" + String(PcbNode()))) Then
  223.         BOOLEAN006 = 0
  224.         Delete PPEPath() + "REPLY" + String(PcbNode())
  225.     Else
  226.         BOOLEAN006 = 1
  227.     Endif
  228.     INT006 = ReadLine(PCBDat(), 6)
  229.     INT007 = ReadLine(PCBDat(), 7)
  230.     INTEGER004 = ReadLine(PCBDat(), 108)
  231.     INT008 = ReadLine(PCBDat(), 131)
  232.     FCloseAll
  233.     FOpen 1, PPEPath() + "READ.CFG", 0, 0
  234.     FGet 1, STRING029
  235.     FGet 1, STRING030
  236.     FGet 1, STRING031
  237.     FGet 1, STRING032
  238.     FClose 1
  239.     STRING017 = PPEPath() + "READTEXT" + LangExt()
  240.     If (!Exist(STRING017)) STRING017 = PPEPath() + "READTEXT"
  241.     FOpen 1, STRING017, 0, 0
  242.     FGet 1, STRING036
  243.     FGet 1, STRING037
  244.     FGet 1, STRING038
  245.     FGet 1, STRING039
  246.     FGet 1, STRING040
  247.     FGet 1, STRING041
  248.     FGet 1, STRING043
  249.     FGet 1, STRING044
  250.     FGet 1, STRING045
  251.     FGet 1, STRING046
  252.     FGet 1, STRING047
  253.     FClose 1
  254.     STRING042 = PPEPath() + "EXT" + String(PcbNode()) + ".BAT"
  255.     If (Exist(STRING042)) Then
  256.         BOOLEAN007 = 1
  257.     Else
  258.         BOOLEAN007 = 0
  259.     Endif
  260.     BOOLEAN012 = 0
  261.     If (BOOLEAN007) Then
  262.         STRING017 = PPEPath() + "POSTBAR" + LangExt()
  263.         If (!Exist(STRING017)) STRING017 = PPEPath() + "POSTBAR"
  264.         If (Exist(STRING017)) Then
  265.             BOOLEAN012 = 1
  266.             FOpen 1, STRING017, 0, 0
  267.             FGet 1, STRING048
  268.             FGet 1, STRING049
  269.             FGet 1, STRING050
  270.             FGet 1, STRING051
  271.             FGet 1, STRING052
  272.             FGet 1, STRING001
  273.             FClose 1
  274.             If (Trim(Left(STRING001, 1), " ") == "Y") Then
  275.                 BOOLEAN013 = 1
  276.                 Goto LABEL005
  277.             Endif
  278.             BOOLEAN013 = 0
  279.         Endif
  280.     Endif
  281.     :LABEL005
  282.     STRING017 = PPEPath() + "READ" + String(PcbNode())
  283.     GetUser
  284.     BOOLEAN010 = U_LongHDR
  285.     Gosub LABEL024
  286.     BOOLEAN003 = 1
  287.     If (IsNonStop()) Then
  288.         BOOLEAN011 = 1
  289.     Else
  290.         BOOLEAN011 = 0
  291.     Endif
  292.     If (TokCount() == 0) Then
  293.         DispFile PPEPath() + "READMENU", 4
  294.         InputStr STRING037, STRING001, 7, 79, Mask_Ascii(), 256 + 8
  295.         Tokenize STRING001
  296.         If (Trim(STRING001, " ") == "") Then
  297.             PROC008(INTEGER005)
  298.         Endif
  299.         Goto LABEL006
  300.     Else
  301.         :LABEL006
  302.         Newline
  303.         STRING001 = Trim(Upper(GetToken()), " ")
  304.         Select Case (STRING001)
  305.             Case "A"
  306.                 BOOLEAN003 = 1
  307.                 BOOLEAN004 = 1
  308.                 DispText 145, 256
  309.                 INTEGER003 = U_Lmr(CurConf()) + 1
  310.             Case "L"
  311.                 BOOLEAN003 = 0
  312.                 INTEGER003 = HiMsgNum()
  313.             Case "Y"
  314.                 BOOLEAN003 = 1
  315.                 BOOLEAN005 = 1
  316.                 INTEGER003 = U_Lmr(CurConf())
  317.                 PrintLn STRING046
  318.                 Newline
  319.             Case 0
  320.                 BOOLEAN003 = 0
  321.                 INTEGER003 = S2I(Trim(StripStr(STRING001, "-"), " "), 10)
  322.             Case 0
  323.                 BOOLEAN003 = 1
  324.                 INTEGER003 = S2I(Trim(StripStr(STRING001, "+"), " "), 10)
  325.             Case Else
  326.                 INTEGER003 = S2I(STRING001, 10)
  327.             Endif
  328.     End Select
  329.     :LABEL007
  330.     BOOLEAN009 = 0
  331.     If (BOOLEAN005) Then
  332.         INTEGER003 = FUNCTION004(INTEGER003)
  333.         If (INTEGER003 == -1) Then
  334.             PROC008(INTEGER005)
  335.         Endif
  336.     Endif
  337.     If (INTEGER003 > HiMsgNum()) Then
  338.         SetLmr CurConf(), HiMsgNum()
  339.         If (BOOLEAN004) Then
  340.             PROC005(CurConf(), INTEGER004, INTEGER003)
  341.         Endif
  342.     Endif
  343.     If (Exist(STRING017)) Delete STRING017
  344.     MsgToFile CurConf(), INTEGER003, STRING017
  345.     If (Exist(STRING017)) Goto LABEL009
  346.     If (INTEGER003 < LoMsgNum()) Then
  347.         If (BOOLEAN003) Then
  348.             Inc INTEGER003
  349.             Goto LABEL007
  350.             Goto LABEL008
  351.         Endif
  352.         PROC008(INTEGER005)
  353.     Endif
  354.     :LABEL008
  355.     If (INTEGER003 > HiMsgNum()) PROC008(INTEGER005)
  356.     If (BOOLEAN003) Then
  357.         Inc INTEGER003
  358.     Else
  359.         Dec INTEGER003
  360.     Endif
  361.     Goto LABEL007
  362.     :LABEL009
  363.     FOpen 2, STRING017, 0, 0
  364.     For INT002 = 1 To 10
  365.         FGet 2, STRING001
  366.         STRING001 = FUNCTION001(STRING001)
  367.         If (INT002 == 1) Then
  368.             STRING019 = Trim(STRING001, " ")
  369.             Continue
  370.         Endif
  371.         If (INT002 == 2) Then
  372.             STRING025 = STRING001
  373.             Continue
  374.         Endif
  375.         If (INT002 == 3) Then
  376.             If (STRING001 == "0") Then
  377.                 STRING026 = "NONE"
  378.                 Goto LABEL010
  379.             Endif
  380.             STRING026 = STRING001
  381.             :LABEL010
  382.             Continue
  383.         Endif
  384.         If (INT002 == 5) Then
  385.             STRING023 = STRING001
  386.             Continue
  387.         Endif
  388.         If (INT002 == 6) Then
  389.             STRING024 = STRING001
  390.             Continue
  391.         Endif
  392.         If (INT002 == 7) Then
  393.             If (STRING001 == "@USER@") Then
  394.                 If (CurSec() < SysopSec()) Then
  395.                     If (U_Alias == "") Then
  396.                         STRING020 = U_Name()
  397.                         Goto LABEL011
  398.                     Endif
  399.                     STRING020 = U_Alias
  400.                     :LABEL011
  401.                     Goto LABEL012
  402.                 Endif
  403.                 STRING020 = "(generic message)"
  404.                 :LABEL012
  405.                 Goto LABEL013
  406.             Endif
  407.             STRING020 = STRING001
  408.             :LABEL013
  409.             Continue
  410.         Endif
  411.         If (INT002 == 9) Then
  412.             STRING021 = STRING001
  413.             Continue
  414.         Endif
  415.         If (INT002 == 10) Then
  416.             STRING022 = STRING001
  417.         Endif
  418.     Next
  419.     If (FUNCTION002(STRING019)) Goto LABEL014
  420.     FClose 2
  421.     Delete STRING017
  422.     If (BOOLEAN003) Then
  423.         Inc INTEGER003
  424.     Else
  425.         Dec INTEGER003
  426.     Endif
  427.     Goto LABEL007
  428.     :LABEL014
  429.     If (INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 10, "R")) Then
  430.         STRING027 = "YES"
  431.     Else
  432.         STRING027 = "NO"
  433.     Endif
  434.     BOOLEAN014 = 1
  435.     Gosub LABEL027
  436.     While (STRING001 <> "Message Body:") Do
  437.         FGet 2, STRING001
  438.     EndWhile
  439.     DefColor
  440.     StartDisp 1
  441.     INT003 = INT004 + 1
  442.     INT005 = 0
  443.     :LABEL015
  444.     If (Ferr(2)) Goto LABEL017
  445.     FGet 2, STRING001
  446.     If (Left(STRING001, 1) == Chr(1)) Then
  447.         TSTRING035(INT005) = Right(STRING001, Len(STRING001) - 1)
  448.         Inc INT005
  449.         Goto LABEL015
  450.     Endif
  451.     If (Left(STRING001, Len(STRING029)) == STRING029) Then
  452.         STRING001 = Right(STRING001, Len(STRING001) - Len(STRING029))
  453.         STRING001 = STRING030 + STRING001
  454.     Endif
  455.     STRING001 = ReplaceStr(STRING001, "|01", "@X01")
  456.     STRING001 = ReplaceStr(STRING001, "|02", "@X02")
  457.     STRING001 = ReplaceStr(STRING001, "|03", "@X03")
  458.     STRING001 = ReplaceStr(STRING001, "|04", "@X04")
  459.     STRING001 = ReplaceStr(STRING001, "|05", "@X05")
  460.     STRING001 = ReplaceStr(STRING001, "|06", "@X06")
  461.     STRING001 = ReplaceStr(STRING001, "|07", "@X07")
  462.     STRING001 = ReplaceStr(STRING001, "|08", "@X08")
  463.     STRING001 = ReplaceStr(STRING001, "|09", "@X09")
  464.     STRING001 = ReplaceStr(STRING001, "|10", "@X0A")
  465.     STRING001 = ReplaceStr(STRING001, "|11", "@X0B")
  466.     STRING001 = ReplaceStr(STRING001, "|12", "@X0C")
  467.     STRING001 = ReplaceStr(STRING001, "|13", "@X0D")
  468.     STRING001 = ReplaceStr(STRING001, "|14", "@X0E")
  469.     STRING001 = ReplaceStr(STRING001, "|15", "@X0F")
  470.     If (InStr(STRING001, Chr(27)) > 0) Then
  471.         PrintLn STRING001
  472.     Else
  473.         PrintLn "@X07" + STRING001
  474.     Endif
  475.     If (BOOLEAN011) Then
  476.         If (Abort()) Then
  477.             BOOLEAN011 = 0
  478.             FClose 2
  479.             Delete STRING017
  480.             Goto LABEL018
  481.         Endif
  482.     Else
  483.         If (BOOLEAN009) Goto LABEL016
  484.         Inc INT003
  485.         If (INT003 == U_PageLen - 1) Then
  486.             StartDisp 0
  487.             More
  488.             If (Abort()) Then
  489.                 FClose 2
  490.                 Delete STRING017
  491.                 Goto LABEL018
  492.             Endif
  493.             If (IsNonStop()) BOOLEAN009 = 1
  494.             StartDisp 1
  495.             INT003 = 1
  496.             If (U_Cls) Then
  497.                 If (U_Scroll) Goto LABEL016
  498.                 INT003 = INT004 + 1
  499.                 PROC009(INT003 + 1)
  500.                 BOOLEAN009 = 0
  501.             Endif
  502.         Endif
  503.     Endif
  504.     :LABEL016
  505.     Goto LABEL015
  506.     :LABEL017
  507.     FClose 2
  508.     Delete STRING017
  509.     :LABEL018
  510.     STRING001 = ""
  511.     If (!BOOLEAN011) InputStr ReplaceStr(ReplaceStr(STRING036, "@CONF@", ConfInfo(CurConf(), 1)), "@CURMSGNUM@", INTEGER003) , STRING001, 7, 79, Mask_Ascii() , 256 + 8
  512.     Select Case (StripStr(STRING001, " "))
  513.         Case ""
  514.             If (BOOLEAN003) Then
  515.                 Inc INTEGER003
  516.             Else
  517.                 Dec INTEGER003
  518.             Endif
  519.             Goto LABEL007
  520.         Case "+"
  521.             Inc INTEGER003
  522.             BOOLEAN003 = 1
  523.             Goto LABEL007
  524.         Case "-"
  525.             Dec INTEGER003
  526.             BOOLEAN003 = 0
  527.             Goto LABEL007
  528.         Case ">"
  529.             INTEGER004 = ReadLine(PCBDat(), 108)
  530.             FCloseAll
  531.             If (CurConf() == INTEGER004) Then
  532.                 Newline
  533.                 PrintLn STRING040
  534.                 Wait
  535.             Else
  536.                 PROC005(CurConf(), INTEGER004, INTEGER003)
  537.             Endif
  538.             Goto LABEL007
  539.         Case "<"
  540.             INTEGER004 = -1
  541.             If (CurConf() == 0) Then
  542.                 Newline
  543.                 PrintLn STRING040
  544.                 Wait
  545.             Else
  546.                 PROC005(CurConf(), INTEGER004, INTEGER003)
  547.             Endif
  548.             Goto LABEL007
  549.         Case "!"
  550.             If (CurSec() >= SysopSec()) Then
  551.                 Newline
  552.                 If (INT005 == 0) Then
  553.                     PrintLn STRING045
  554.                     Goto LABEL019
  555.                 Endif
  556.                 PrintLn STRING043
  557.                 Newline
  558.                 DefColor
  559.                 For INT002 = 0 To INT005
  560.                     If (Trim(TSTRING035(INT002), " ") <> "") PrintLn TSTRING035(INT002)
  561.                 Next
  562.                 Newline
  563.                 PrintLn STRING044
  564.             Endif
  565.             :LABEL019
  566.             Newline
  567.             Goto LABEL018
  568.         Case "A", "AG", "AGA", "AGAI", "AGAIN"
  569.             Goto LABEL007
  570.         Case ((StripStr(STRING001, " ") == "D") || (StripStr(STRING001, " ") == "DO")) || (StripStr(STRING001, " ") == "DOW"), "D", "DO", "DOW", "DOWN", "DOWNL", "DOWNLO", "DOWNLOA", "DOWNLOAD"
  571.             STRING018 = ""
  572.             Newline
  573.             If (OnLocal()) Then
  574.                 InputText "@X08(@X0Alocal only@X08)@X0F capture file path@X08: _", STRING018, 7, 79
  575.                 If (Trim(STRING018, " ") == "") Goto LABEL018
  576.                 If (Right(STRING018, 1) == "\") Then
  577.                     STRING018 = STRING018 + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
  578.                 Else
  579.                     STRING018 = STRING018 + "\" + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
  580.                 Endif
  581.                 Backup 79
  582.                 ClrEol
  583.                 Print "@X08(@X0Alocal only@X08)@X0F writting " + Lower(STRING018) + "@X08... "
  584.             Else
  585.                 STRING018 = TempPath() + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
  586.             Endif
  587.             MsgToFile CurConf(), INTEGER003, STRING017
  588.             FOpen 2, STRING017, 0, 0
  589.             While (STRING001 <> "Message Body:") Do
  590.                 FGet 2, STRING001
  591.             EndWhile
  592.             FOpen 3, STRING018, 1, 0
  593.             For INT002 = 0 To INT004
  594.                 FPutLn 3, RTrim(TSTRING034(INT002), " ")
  595.             Next
  596.             :LABEL020
  597.             If (Ferr(2)) Goto LABEL021
  598.             FGet 2, STRING001
  599.             If (!(Left(STRING001, 1) == Chr(1))) FPutLn 3, StripAtx(FUNCTION003(STRING001))
  600.             Goto LABEL020
  601.             :LABEL021
  602.             FCloseAll
  603.             Delete STRING017
  604.             If (OnLocal()) Goto LABEL022
  605.             Shell 1, STRING001, "ZMSEND.EXE", STRING018
  606.             Delete STRING018
  607.             Wait
  608.             Goto LABEL023
  609.             :LABEL022
  610.             PrintLn "@X0Fdone!"
  611.             :LABEL023
  612.             Newline
  613.             Goto LABEL018
  614.         Case "R", "RE", "REP", "REPL", "REPLY"
  615.             If (BOOLEAN007) Then
  616.                 If (U_Alias == "") Then
  617.                     STRING001 = U_Name()
  618.                 Else
  619.                     STRING001 = U_Alias
  620.                 Endif
  621.                 PROC004(STRING042, TempPath() + "MSGTMP", TempPath() + "DORINFO1.DEF", TempPath() + "MSGINF", INTEGER003, STRING021, STRING001, STRING022, STRING029, BOOLEAN008, 1)
  622.                 Goto LABEL007
  623.             Else
  624.                 If (BOOLEAN003) Then
  625.                     STRING001 = "+"
  626.                 Else
  627.                     STRING001 = "-"
  628.                 Endif
  629.                 STRING001 = String(INTEGER003) + STRING001
  630.                 STRING018 = TempPath() + "CALLED." + String(PcbNode())
  631.                 If (Exist(STRING018)) Delete STRING018
  632.                 FOpen 3, STRING018, 1, 3
  633.                 FPut 3, PPEPath() + PPEName() + ".PPE " + STRING001
  634.                 FClose 3
  635.                 If (INTEGER003 > U_Lmr(CurConf())) Then
  636.                     SetLmr CurConf(), INTEGER003 - 1
  637.                 Endif
  638.                 PutUser
  639.                 STRING018 = PPEPath() + "REPLY" + String(PcbNode())
  640.                 If (Exist(STRING018)) Delete STRING018
  641.                 FOpen 3, STRING018, 1, 3
  642.                 FPut 3, String(INTEGER003)
  643.                 FClose 3
  644.                 If (BOOLEAN006) Then
  645.                     KbdStuff "REPLY^M"
  646.                 Endif
  647.             Endif
  648.             End
  649.         Case "L", "LA", "LAS", "LAST"
  650.             BOOLEAN003 = 0
  651.             INTEGER003 = HiMsgNum()
  652.             Goto LABEL007
  653.         Case "K", "KI", "KIL", "KILL"
  654.             Newline
  655.             If (CurSec() >= INT008) Then
  656.                 If ((INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 7, U_Alias)) || (INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 11, U_Alias))) Then
  657.                     KillMsg CurConf(), INTEGER003
  658.                     OpText String(INTEGER003)
  659.                     PrintLn STRING038
  660.                     If (BOOLEAN003) Then
  661.                         Inc INTEGER003
  662.                     Else
  663.                         Dec INTEGER003
  664.                     Endif
  665.                 ElseIf (CurSec() == SysopSec()) Then
  666.                     KillMsg CurConf(), INTEGER003
  667.                     OpText String(INTEGER003)
  668.                     PrintLn STRING038
  669.                     If (BOOLEAN003) Then
  670.                         Inc INTEGER003
  671.                     Else
  672.                         Dec INTEGER003
  673.                     Endif
  674.                 Else
  675.                     OpText String(INTEGER003)
  676.                     PrintLn STRING039
  677.                     Newline
  678.                     Goto LABEL018
  679.                 Endif
  680.             Else
  681.                 OpText String(INTEGER003)
  682.                 PrintLn STRING039
  683.                 Newline
  684.                 Goto LABEL018
  685.             Endif
  686.             Newline
  687.             Goto LABEL007
  688.         Case "P", "PO", "POS", "POST"
  689.             If (INTEGER003 > U_Lmr(CurConf())) Then
  690.                 SetLmr CurConf(), INTEGER003
  691.             Endif
  692.             PutUser
  693.             Tokenize "ALL"
  694.             Call PPEPath() + "ENTER.PPE"
  695.             End
  696.         Case "NS", "NONSTOP"
  697.             BOOLEAN011 = 1
  698.             Goto LABEL018
  699.         Case "SH", "SHO", "SHOR", "SHORT"
  700.             BOOLEAN010 = 0
  701.             Gosub LABEL024
  702.             Goto LABEL007
  703.         Case "LO", "LON", "LONG"
  704.             BOOLEAN010 = 1
  705.             Gosub LABEL024
  706.             Goto LABEL007
  707.         Case "Q", "QU", "QUI", "QUIT"
  708.             PROC008(INTEGER005)
  709.         Case "?", "H", "HE", "HEL", "HELP"
  710.             StartDisp 0
  711.             DispFile PPEPath() + "READHLP", 4
  712.             StartDisp 1
  713.             Goto LABEL018
  714.         Case Else
  715.             If (InStr(STRING001, "-") > 0) Then
  716.                 BOOLEAN003 = 0
  717.                 INTEGER003 = S2I(Trim(StripStr(STRING001, "-"), " "), 10)
  718.             ElseIf (InStr(STRING001, "+") > 0) Then
  719.                 BOOLEAN003 = 1
  720.                 INTEGER003 = S2I(Trim(StripStr(STRING001, "+"), " "), 10)
  721.             Else
  722.                 INTEGER003 = S2I(STRING001, 10)
  723.             Endif
  724.             Goto LABEL007
  725.     End Select
  726.     End
  727.     :LABEL024
  728.     If (BOOLEAN010) Then
  729.         STRING001 = PPEPath() + "READHDR" + LangExt()
  730.         If (!Exist(STRING001)) STRING001 = PPEPath() + "READHDR"
  731.     Else
  732.         STRING001 = PPEPath() + "READHDRS" + LangExt()
  733.         If (!Exist(STRING001)) STRING001 = PPEPath() + "READHDRS"
  734.     Endif
  735.     FOpen 1, STRING001, 0, 0
  736.     INT002 = 0
  737.     :LABEL025
  738.     If (Ferr(1)) Goto LABEL026
  739.     FGet 1, TSTRING033(INT002)
  740.     Inc INT002
  741.     Goto LABEL025
  742.     :LABEL026
  743.     FClose 1
  744.     INT004 = INT002 - 1
  745.     Return
  746.     :LABEL027
  747.     Newline
  748.     If (U_Cls) Cls
  749.     For INT002 = 0 To INT004
  750.         STRING001 = TSTRING033(INT002)
  751.         STRING001 = ReplaceStr(STRING001, "@TO@", Upper(STRING020))
  752.         STRING001 = ReplaceStr(STRING001, "@MTO@", Mixed(STRING020))
  753.         STRING001 = ReplaceStr(STRING001, "@FROM@", Upper(STRING021))
  754.         STRING001 = ReplaceStr(STRING001, "@MFROM@", Mixed(STRING021))
  755.         STRING001 = ReplaceStr(STRING001, "@SUBJECT@", STRING022)
  756.         STRING001 = ReplaceStr(STRING001, "@DATE@", ReplaceStr(STRING023, "-", STRING031))
  757.         STRING001 = ReplaceStr(STRING001, "@TIME@", ReplaceStr(STRING024, ":", STRING032))
  758.         STRING001 = ReplaceStr(STRING001, "@CURMSGNUM@", STRING025)
  759.         STRING001 = ReplaceStr(STRING001, "@HIGHMSGNUM@", String(HiMsgNum()))
  760.         STRING001 = ReplaceStr(STRING001, "@REPLYTO@", STRING026)
  761.         STRING001 = ReplaceStr(STRING001, "@READ@", STRING028)
  762.         STRING001 = ReplaceStr(STRING001, "@REPLIED@", STRING027)
  763.         STRING001 = ReplaceStr(STRING001, "@CONF@", ConfInfo(CurConf(), 1))
  764.         PrintLn STRING001
  765.         TSTRING034(INT002) = ScrText(1, GetY() - 1, 80, 0)
  766.     Next
  767.     Return
  768.     End
  769.  
  770. ;------------------------------------------------------------------------------
  771.  
  772.     Function FUNCTION001(String STRING053) String
  773.  
  774.     Integer  INTEGER006
  775.  
  776.     FUNCTION001 = Right(STRING053, Len(STRING053) - 18)
  777.     If (Len(FUNCTION001) > 17) Then
  778.         FUNCTION001 = Trim(Left(FUNCTION001, 17), " ")
  779.     Endif
  780.  
  781.     EndFunc
  782.  
  783.  
  784. ;------------------------------------------------------------------------------
  785.  
  786.     Procedure PROC005(Integer INTEGER006, Integer INTEGER007, Var Integer INTEGER008)
  787.  
  788.     :LABEL028
  789.     If (Abort()) PROC008(INTEGER005)
  790.     If (INTEGER007 == -1) Then
  791.         Goto LABEL032
  792.     Endif
  793.     Inc INTEGER006
  794.     :LABEL029
  795.     If (ConfSel(INTEGER006)) Goto LABEL031
  796.     Inc INTEGER006
  797.     If (INTEGER006 > INTEGER007) Then
  798.         If (BOOLEAN004) Goto LABEL030
  799.         Newlines 2
  800.         PrintLn STRING040
  801.         :LABEL030
  802.         PROC008(INTEGER005)
  803.     Endif
  804.     Goto LABEL029
  805.     :LABEL031
  806.     Goto LABEL034
  807.     :LABEL032
  808.     Dec INTEGER006
  809.     :LABEL033
  810.     If (ConfSel(INTEGER006)) Goto LABEL034
  811.     Dec INTEGER006
  812.     If (INTEGER006 < 0) Then
  813.         PROC008(INTEGER005)
  814.     Endif
  815.     Goto LABEL033
  816.     :LABEL034
  817.     If (Strip(ConfInfo(INTEGER006, 1), " ") == "") Then
  818.         Newline
  819.         OpText String(INTEGER006)
  820.         Print STRING041
  821.         Log "De-sel. non-existant conf.: '" + String(INTEGER006) + "'", 0
  822.         ConfUnflag INTEGER006, 4 + 1 + 2
  823.         SetLmr CurConf(), 0
  824.         PutUser
  825.         Goto LABEL028
  826.     Endif
  827.     If (INTEGER006 < 0) Then
  828.         If (BOOLEAN004) Goto LABEL035
  829.         Newlines 2
  830.         PrintLn STRING040
  831.         :LABEL035
  832.         PROC008(INTEGER005)
  833.     Endif
  834.     If (BOOLEAN011) Goto LABEL036
  835.     If (BOOLEAN014) Then
  836.         If (BOOLEAN012) PROC006()
  837.     Endif
  838.     :LABEL036
  839.     If (Abort()) PROC008(INTEGER005)
  840.     Command 0, "JOIN " + String(INTEGER006) + ";Q"
  841.     BOOLEAN014 = 0
  842.     INTEGER008 = U_Lmr(CurConf())
  843.     If (Abort()) PROC008(INTEGER005)
  844.     If (INTEGER008 >= HiMsgNum()) Then
  845.         DispText 78, 0
  846.         Goto LABEL028
  847.     Endif
  848.  
  849.     EndProc
  850.  
  851.  
  852. ;------------------------------------------------------------------------------
  853.  
  854.     Procedure PROC006()
  855.  
  856.     Newline
  857.     Print ReplaceStr(STRING048, "@CONF@", ConfInfo(CurConf(), 1))
  858.     INT002 = GetX()
  859.     If (BOOLEAN013) Then
  860.         Print STRING050 + STRING051
  861.         INT003 = 1
  862.     Else
  863.         Print STRING049 + STRING052
  864.         INT003 = 2
  865.     Endif
  866.     :LABEL037
  867.     STRING001 = Upper(TInkey(0))
  868.     Select Case (STRING001)
  869.         Case "6"
  870.             STRING001 = "RIGHT"
  871.         Case "4"
  872.             STRING001 = "LEFT"
  873.     End Select
  874.     If ((STRING001 == "LEFT") || (STRING001 == "RIGHT")) PROC007(INT003, INT002)
  875.     If (STRING001 == NoChar()) Then
  876.         INT003 = 1
  877.         PROC007(INT003, INT002)
  878.         STRING001 = Chr(13)
  879.     Endif
  880.     If (STRING001 == YesChar()) Then
  881.         INT003 = 2
  882.         PROC007(INT003, INT002)
  883.         STRING001 = Chr(13)
  884.     Endif
  885.     If (STRING001 == Chr(13)) Then
  886.         If (INT003 == 1) Then
  887.             Call PPEPath() + "ENTER.PPE"
  888.         Endif
  889.     Else
  890.         Goto LABEL037
  891.     Endif
  892.     Newline
  893.  
  894.     EndProc
  895.  
  896.  
  897. ;------------------------------------------------------------------------------
  898.  
  899.     Procedure PROC007(Var Int INT009, Int INT010)
  900.  
  901.     If (INT009 == 1) Then
  902.         Backup GetX() - INT010
  903.         Print STRING049 + STRING052
  904.         INT009 = 2
  905.     Else
  906.         Backup GetX() - INT010
  907.         Print STRING050, STRING051
  908.         INT009 = 1
  909.     Endif
  910.  
  911.     EndProc
  912.  
  913.  
  914. ;------------------------------------------------------------------------------
  915.  
  916.     Procedure PROC008(Integer INTEGER009)
  917.  
  918.     If (INTEGER003 > U_Lmr(CurConf())) Then
  919.         SetLmr CurConf(), INTEGER003
  920.     Endif
  921.     If (INTEGER009 <> CurConf()) Then
  922.         Command 0, "JOIN " + String(INTEGER009) + ";Q"
  923.     Endif
  924.     PutUser
  925.     If (BOOLEAN005) Then
  926.         If (!BOOLEAN014) PrintLn STRING047
  927.     Endif
  928.     Newline
  929.     PrintLn "@X07Read.ppe v1.20 reading complete! @X0FM@X07av@X08erick/[@X0CANTi@X08-@X0FX@X08] @X07'96"
  930.     End
  931.  
  932.     EndProc
  933.  
  934.  
  935. ;------------------------------------------------------------------------------
  936.  
  937.     Procedure PROC009(Int INT011)
  938.  
  939.     For INT002 = INT011 To U_PageLen
  940.         AnsiPos 0, INT002
  941.         ClrEol
  942.     Next
  943.     AnsiPos 0, INT011
  944.  
  945.     EndProc
  946.  
  947.  
  948. ;------------------------------------------------------------------------------
  949.  
  950.     Function FUNCTION002(String STRING055) Boolean
  951.  
  952.     String   STRING056
  953.  
  954.     FUNCTION002 = 0
  955.     If (U_Alias == "") Then
  956.         STRING001 = U_Name()
  957.     Else
  958.         STRING001 = U_Alias
  959.     Endif
  960.     Select Case (STRING055)
  961.         Case ""
  962.             STRING028 = "N/A"
  963.             BOOLEAN008 = 0
  964.             FUNCTION002 = 1
  965.         Case "*"
  966.             STRING028 = "NO"
  967.             BOOLEAN008 = 1
  968.             If (CurSec() < INT007) Then
  969.                 FUNCTION002 = 0
  970.             Else
  971.                 FUNCTION002 = 1
  972.             Endif
  973.             If (STRING001 == Upper(STRING020)) FUNCTION002 = 1
  974.             If (STRING001 == Upper(STRING021)) FUNCTION002 = 1
  975.         Case "+"
  976.             STRING028 = "YES"
  977.             BOOLEAN008 = 1
  978.             If (CurSec() < INT007) Then
  979.                 FUNCTION002 = 0
  980.             Else
  981.                 FUNCTION002 = 1
  982.             Endif
  983.             If (STRING001 == Upper(STRING020)) FUNCTION002 = 1
  984.             If (STRING001 == Upper(STRING021)) FUNCTION002 = 1
  985.         Case "-"
  986.             STRING028 = "YES"
  987.             BOOLEAN008 = 0
  988.             FUNCTION002 = 1
  989.         Case "~"
  990.             STRING028 = "NO"
  991.             If (CurSec() < INT006) FUNCTION002 = 0
  992.         Case "`"
  993.             STRING028 = "YES"
  994.             If (CurSec() < INT006) FUNCTION002 = 0
  995.     End Select
  996.  
  997.     EndFunc
  998.  
  999.  
  1000. ;------------------------------------------------------------------------------
  1001.  
  1002.     Function FUNCTION003(String STRING056) String
  1003.  
  1004.     Integer  INTEGER010
  1005.  
  1006.     STRING056 = ReplaceStr(STRING056, "|01", "")
  1007.     STRING056 = ReplaceStr(STRING056, "|02", "")
  1008.     STRING056 = ReplaceStr(STRING056, "|03", "")
  1009.     STRING056 = ReplaceStr(STRING056, "|04", "")
  1010.     STRING056 = ReplaceStr(STRING056, "|05", "")
  1011.     STRING056 = ReplaceStr(STRING056, "|06", "")
  1012.     STRING056 = ReplaceStr(STRING056, "|07", "")
  1013.     STRING056 = ReplaceStr(STRING056, "|08", "")
  1014.     STRING056 = ReplaceStr(STRING056, "|09", "")
  1015.     STRING056 = ReplaceStr(STRING056, "|10", "")
  1016.     STRING056 = ReplaceStr(STRING056, "|11", "")
  1017.     STRING056 = ReplaceStr(STRING056, "|12", "")
  1018.     STRING056 = ReplaceStr(STRING056, "|13", "")
  1019.     STRING056 = ReplaceStr(STRING056, "|14", "")
  1020.     FUNCTION003 = ReplaceStr(STRING056, "|15", "")
  1021.  
  1022.     EndFunc
  1023.  
  1024.  
  1025. ;------------------------------------------------------------------------------
  1026.  
  1027.     Function FUNCTION004(Integer INTEGER010) Integer
  1028.  
  1029.     Integer  TINTEGER012(3)
  1030.     Integer  TINTEGER013(3)
  1031.  
  1032.     TINTEGER012(0) = ScanMsgHdr(CurConf(), INTEGER010, 7, U_Alias)
  1033.     TINTEGER012(1) = ScanMsgHdr(CurConf(), INTEGER010, 7, U_Name())
  1034.     TINTEGER012(2) = ScanMsgHdr(CurConf(), INTEGER010, 7, "@USER@")
  1035.     If (U_RecNum(U_Name()) == 1) Then
  1036.         TINTEGER012(3) = ScanMsgHdr(CurConf(), INTEGER010, 7, "SYSOP")
  1037.     Else
  1038.         TINTEGER012(3) = -1
  1039.     Endif
  1040.     Sort TINTEGER012, TINTEGER013
  1041.     FUNCTION004 = TINTEGER012(TINTEGER013(0))
  1042.     If (FUNCTION004 == -1) FUNCTION004 = TINTEGER012(TINTEGER013(1))
  1043.     If (FUNCTION004 == -1) FUNCTION004 = TINTEGER012(TINTEGER013(2))
  1044.     If (FUNCTION004 == -1) FUNCTION004 = TINTEGER012(TINTEGER013(3))
  1045.  
  1046.     EndFunc
  1047.  
  1048.  
  1049. ;------------------------------------------------------------------------------
  1050. ;
  1051. ; Usage report (before postprocessing)
  1052. ;
  1053. ; ■ Statements used :
  1054. ;
  1055. ;    6       End
  1056. ;    1       Cls
  1057. ;    2       ClrEol
  1058. ;    1       More
  1059. ;    4       Wait
  1060. ;    267     Goto 
  1061. ;    211     Let 
  1062. ;    7       Print 
  1063. ;    19      PrintLn 
  1064. ;    169     If 
  1065. ;    1       ConfUnflag 
  1066. ;    2       DispFile 
  1067. ;    13      FOpen 
  1068. ;    15      FClose 
  1069. ;    29      FGet 
  1070. ;    2       FPut 
  1071. ;    22      FPutLn 
  1072. ;    5       StartDisp 
  1073. ;    2       GetUser
  1074. ;    4       PutUser
  1075. ;    2       DefColor
  1076. ;    15      Delete 
  1077. ;    1       Log 
  1078. ;    2       InputStr 
  1079. ;    4       Gosub 
  1080. ;    2       Return
  1081. ;    12      Inc 
  1082. ;    8       Dec 
  1083. ;    19      Newline
  1084. ;    2       Newlines 
  1085. ;    4       Tokenize 
  1086. ;    2       Shell 
  1087. ;    2       DispText 
  1088. ;    1       InputText 
  1089. ;    1       KbdStuff 
  1090. ;    2       Call 
  1091. ;    5       OpText 
  1092. ;    2       AnsiPos 
  1093. ;    3       Backup 
  1094. ;    2       Message 
  1095. ;    1       SaveScrn
  1096. ;    1       RestScrn
  1097. ;    1       Sort 
  1098. ;    5       SetLmr 
  1099. ;    3       FCloseAll
  1100. ;    9       EndProc
  1101. ;    4       EndFunc
  1102. ;    3       MsgToFile 
  1103. ;    2       Command 
  1104. ;    2       KillMsg 
  1105. ;
  1106. ;
  1107. ; ■ Functions used :
  1108. ;
  1109. ;    8       -
  1110. ;    82      +
  1111. ;    9       -
  1112. ;    116     ==
  1113. ;    5       <>
  1114. ;    13      <
  1115. ;    5       <=
  1116. ;    12      >
  1117. ;    13      >=
  1118. ;    146     !
  1119. ;    10      &&
  1120. ;    44      ||
  1121. ;    7       Len(
  1122. ;    1       Lower()
  1123. ;    8       Upper()
  1124. ;    10      Left()
  1125. ;    5       Right()
  1126. ;    4       Ferr()
  1127. ;    7       Chr()
  1128. ;    5       InStr()
  1129. ;    5       Abort()
  1130. ;    1       RTrim()
  1131. ;    11      Trim()
  1132. ;    6       U_Name()
  1133. ;    1       NoChar()
  1134. ;    1       YesChar()
  1135. ;    1       StripAtx()
  1136. ;    4       Strip()
  1137. ;    24      String()
  1138. ;    2       Mask_Ascii()
  1139. ;    38      CurConf()
  1140. ;    8       PCBDat()
  1141. ;    19      PPEPath()
  1142. ;    9       PcbNode()
  1143. ;    8       ReadLine()
  1144. ;    3       SysopSec()
  1145. ;    4       OnLocal()
  1146. ;    8       CurSec()
  1147. ;    5       GetToken()
  1148. ;    12      Exist()
  1149. ;    6       S2I()
  1150. ;    4       LangExt()
  1151. ;    3       GetX()
  1152. ;    1       GetY()
  1153. ;    1       PPEName()
  1154. ;    13      TempPath()
  1155. ;    1       TokCount()
  1156. ;    1       U_RecNum()
  1157. ;    1       ScrText()
  1158. ;    48      ReplaceStr()
  1159. ;    58      StripStr()
  1160. ;    4       Mixed()
  1161. ;    2       ConfSel()
  1162. ;    2       IsNonStop()
  1163. ;    6       U_Lmr()
  1164. ;    1       LoMsgNum()
  1165. ;    8       HiMsgNum()
  1166. ;    2       PCBMac()
  1167. ;    7       ScanMsgHdr()
  1168. ;    7       ConfInfo()
  1169. ;    1       TInkey()
  1170. ;
  1171. ;------------------------------------------------------------------------------
  1172. ;
  1173. ; Analysis flags : FWSCds
  1174. ;
  1175. ; F - Change conference flags status ■ 2
  1176. ;     This may be normal for a SELECT replacement but it may also be
  1177. ;     a way to get access to conferences a user is not allowed to.
  1178. ;     ■ Search for : CONFFLAG, CONFUNFLAG
  1179. ;
  1180. ; W - Write user ■ 5
  1181. ;     Program writes a user record. Although this may be normal for a
  1182. ;     User Editor, it may also be a way to modify an account level.
  1183. ;     ■ Search for : PUTUSER
  1184. ;
  1185. ; S - Shell to DOS ■ 5
  1186. ;     This may be normal if the PPE need to execute an external command,
  1187. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  1188. ;     or usefull (sorting, maintenance,...). Check!
  1189. ;     ■ Search for : SHELL
  1190. ;
  1191. ; C - Call child PPE ■ 3
  1192. ;     This is usually normal, but may be a tricky way to launch some
  1193. ;     sysop-only commands.
  1194. ;     ■ Search for : CALL
  1195. ;
  1196. ; d - Access PCBOARD.DAT ■ 2
  1197. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  1198. ;     for many PPE so they can find various informations on the system
  1199. ;     (system paths, max number of lines in messages, ...) but it may also
  1200. ;     be a way to gather vital informations.
  1201. ;     ■ Search for : PCBDAT()
  1202. ;
  1203. ; s - Sysop level access ■ 5
  1204. ;     Program is reading the sysop access level, this may be normal
  1205. ;     but still it is very suspect. It is the best way to give a user
  1206. ;     all priviledges. Check!
  1207. ;     ■ Search for : SYSOPSEC()
  1208. ;
  1209. ;------------------------------------------------------------------------------
  1210. ;
  1211. ; Postprocessing report
  1212. ;
  1213. ;    5       For/Next
  1214. ;    3       While/EndWhile
  1215. ;    86      If/Then or If/Then/Else
  1216. ;    4       Select Case
  1217. ;
  1218. ;------------------------------------------------------------------------------
  1219. ;                 AEGiS Corp - Break the routines, code against the machines!
  1220. ;------------------------------------------------------------------------------
  1221.